<HTML>
<HEAD>
<TITLE>
Etg_Almacenamiento.h
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#ifndef</font> ETG_ALMACENAMIENTO_H_
<font color="blue">#define</font> ETG_ALMACENAMIENTO_H_

<font color="blue">#include</font> <font color="maroon">"../almacenamiento/Almacenamiento.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoMemoria.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoAlmacenamiento.h"</font>
<font color="blue">#include</font> <font color="maroon">"../../enums/TipoSerializacion.h"</font>
<font color="blue">#include</font> <font color="maroon">&#60;vector&#62;</font>
<font color="blue">using</font> <font color="blue">namespace</font> std;

<font color="blue">class</font> Etg_Almacenamiento<font color="black">{</font>
        
    <font color="blue">protected</font><font color="black">:</font>
        <font color="blue">void</font> <font color="black">*</font>posIni; 
        <font color="blue">unsigned</font> <font color="blue">int</font> offset; 
        TipoMemoria tipoMem;
        Almacenamiento  <font color="black">*</font><font color="black">*</font>persistencia;
        TipoAlmacenamiento tipoA;
        
        <font color="blue">void</font> ubicar<font color="black">(</font>Compuesto <font color="black">*</font>compuesto, Dato <font color="black">*</font>daux,<font color="blue">unsigned</font> <font color="blue">int</font> <font color="black">*</font>pos, <font color="blue">unsigned</font> <font color="blue">int</font> <font color="black">*</font>tam, TipoSerializacion tipoS<font color="black">)</font>;
        
    <font color="blue">public</font><font color="black">:</font>
    
        <font color="green">/**
         * 
         * Crea un almacenamiento nuevo
         * 
         *  @author veronica
         * 
         * @param listaDatos: array de datos a almacenar en la carga inicial 
         * 
         */</font>
    
        virtual <font color="blue">void</font> crear<font color="black">(</font>TipoMemoria tipo, std<font color="black">:</font><font color="black">:</font>vector<font color="black">&#60;</font>Dato<font color="black">*</font><font color="black">&#62;</font> listaDatos, <font color="blue">void</font> <font color="black">*</font>ptr<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
    
        <font color="green">/**
         * Realiza la insercion de un nuevo registro
         * 
         * pre: no realiza validacion de unicidad, el indice es quien se encarga de esto previo 
         * pedir su insercion, no valida espacio libre, de esto se encarga el recurso de almacenamiento...
         * 
         * 
         * @param Dato*: dato a almacenar, se hace una copia del mismo donde corresponda 
         * 
         * 
         */</font>
        virtual <font color="blue">void</font> insertar<font color="black">(</font>Dato <font color="black">*</font>nvoDato,<font color="blue">int</font><font color="black">*</font> nroComponente<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * 
         * Lee un dato 
         *
         * @param PrimaryKey: clave primaria del registro a leer 
         * 
         */</font>
        virtual <font color="blue">void</font> leer<font color="black">(</font>Dato <font color="black">*</font>dato<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        virtual <font color="blue">void</font> leer<font color="black">(</font>Dato <font color="black">*</font>dato,<font color="blue">int</font> nroBloque<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
                
        <font color="green">/**
         * Borra un registro existente
         * @param Dato*: dato que solo posee la clave primaria a localizar para elimiar 
         */</font>
        virtual <font color="blue">void</font> eliminar<font color="black">(</font>Dato <font color="black">*</font>daux,<font color="blue">int</font> nroComponente<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
                
        <font color="green">/**
         * Realiza la actualizacion de un registro
         * 
         * pre: la clave existe, pues el indice se encarga de validarlo 
         * 
         * ES ASI ¿?¿?¿? HELP!
         * 
         * @param Dato*: dato completo por el cual debe reemplazar al existente 
         * se hace una copia del mismo donde corresponda 
         * 
         */</font>
        virtual <font color="blue">void</font> modificar<font color="black">(</font>Dato <font color="black">*</font>dAux<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        virtual <font color="blue">void</font> modificar<font color="black">(</font>Dato <font color="black">*</font>dAux, <font color="blue">int</font> bOrig, <font color="blue">int</font> <font color="black">*</font>bDest<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
    
            
<font color="black">}</font>;

<font color="blue">#endif</font> <font color="green">/*ALMACENAMIENTO_H_*/</font>

</PRE>
</BODY>
</HTML>
